其他
C# 11 中的 Raw String Literal
The following article is from amazingdotnet Author WeihanLi
前言
C# 11 中将引入一个有意思的特性 —— Raw string Literal, 翻译一下就是原始的字符串字面值,是不是感觉有点绕,简单说就是字符串中的内容是什么就输出什么,不需要转义,看下面的示例应该就能明白了
示例
多行的文本,在之前的 C# 版本中我们会使用 @
来进行声明,如下:
var testString = @"HTTP/1.1 200 OK
Connection: keep-alive
Date: Wed, 23 Mar 2022 14:05:03 GMT
Server: nginx/1.14.1
Transfer-Encoding: chunked
X-dotnet-HTTPie-Duration: 720.0249ms
X-dotnet-HTTPie-ResponseTimestamp: 2022/3/23 22:05:03 +08:00";
"""
来声明,示例如下:var testString = """
HTTP/1.1 200 OK
Connection: keep-alive
Date: Wed, 23 Mar 2022 14:05:03 GMT
Server: nginx/1.14.1
Transfer-Encoding: chunked
X-dotnet-HTTPie-Duration: 720.0249ms
X-dotnet-HTTPie-ResponseTimestamp: 2022/3/23 22:05:03 +08:00
""";
Console.WriteLine(testString);
输出结果如下:
这似乎并不能体现它带来的好处,我们接着来看一个示例,一个格式化后的 Json 字符串,使用 @
的时候我们的字符串中有引号的话就需要进行转义,示例如下
var rawJson = @"{
""name"": ""test"",
""age"": 10
}";
使用 C# 11 中的三个引号的方式进行声明就会简单很多,就会变成下面这样:
var rawJson = """
{
"name": "test",
"age": 10
}
""";
Console.WriteLine(rawJson);
不仅仅适用于多行,单行的文本也可以是可以用的,比如:
Console.WriteLine("""<div style="color:red">Amazing .NET</div>""");
从 C# 6.0 开始,开始支持字符串插值的写法,对于新的字符串声明方式也是支持字符串插值的,只是使用方式稍有不同,我们来看一个示例:
var interpolatedString = $$"""
{
"name": "test",
"age": {{10}}
}
""";
Console.WriteLine(interpolatedString);
总结
var oh = """"
Ok to use """ here
"""";
Console.WriteLine(oh);
- EOF -
看完本文有收获?请转发分享给更多人
推荐关注「DotNet」,提升.Net技能
点赞和在看就是最大的支持❤️